import java.io.File;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ZhongJinTao
 * Date: 2024-03-05
 * Time: 12:40
 */
//D:/desktop/file/javaEE/JavaEECode/test
public class IODemo9 {
    public static void main(String[] args) {
        //1、输入必要信息
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要查找的文件");
        String fileName = scanner.next();
        System.out.println("请输入要搜索的目录");
        String rootPath = scanner.next();
        File file = new File(rootPath);
        //判断输入的目录是否合法
        if(!file.isDirectory()) {
            //不是目录
            System.out.println("输入的目录不合法");
            return;
        }
        //2、在目录下找我们给定文件名，看是否存在，使用递归的方式进行搜索
        scanDir(file, fileName);//知道递归的起点，还需要知道要查询的文件名
    }
    private static void scanDir(File rootFile, String  fileName) {
        //1、把所有子目录都列出来
        File[] files = rootFile.listFiles();
        //递归结束条件
        if(files == null) {
            //空目录，直接返回
            return;
        }
        //2、遍历files，判断每一个file文件是目录还是文件
        for(File f : files) {
            //记录日志
            System.out.println("当前遍历到："  + f.getAbsolutePath());
            //1、文件，判断文件名是不是要查找的文件名
            if(f.isFile()) {
                String name = f.getName();
                if(fileName.equals(name)) {
                    System.out.println("找到文件了，文件路径：" + f.getAbsolutePath());
                }
            } else if(f.isDirectory()) {
                //2、目录，继续往下递归
                scanDir(f, fileName);
            } else {
                // 这个 else 暂时不需要
            }
        }
    }
}
